/**
给你一棵二叉树的根节点，返回该树的 直径 。
二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。
两节点之间路径的 长度 由它们之间边数表示
输入：root = [1,2,3,4,5] 输出：3
解释：3 ，取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。
输入：root = [1,2] 输出：1
思路：最深左子树+最深右子树 对比最大深度：最深左子树+最深右子树+1
 */
import arrayToTree from './0-数组转为二叉树.js'
function diameterOfBinaryTree(root) {
  let max = 0
  const dfs = (node) => {
    if(!node) return 0
    const left = dfs(node.left)
    const right = dfs(node.right)
    max = Math.max(max, left + right)
    return Math.max(left, right) + 1
  }
  dfs(root)
  return max
}
const root = [1,2]
const res = diameterOfBinaryTree(arrayToTree(root))
console.log(res)